package com.demo.dao;

import com.demo.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface IUserDao {
    // 查询用户数
    public Long getCount();

    // 根据id查询用户数据，返回的map集合
    // 将查询到的数据存储在map集合中，map的可以是数据对应的列名，值是当前列所对应的值
    public Map<String,Object> selectUserById(Integer id);

    /**
     * 通过name进行模糊查询用户数据，同时还可以根据年龄和性别进行查询
     */
    // 接收多个参数的时候，不能直接书写自定义的参数名
    //public List<User> getUserLike(String name , Integer age, String sex);
    // 需要按照mybatis规定的参数格式命名变量
    //public List<User> getUserLike(String arg0 , Integer arg1, String arg2);
    // mybatis中提供的@param注解，用来标注每个参数真正对应的名称
    // @Param注解中书写的名称必须和mapper文件中占位符中的名称保持一致
    public List<User> getUserLike(@Param("name") String name , @Param("sex")String sex , @Param("age")Integer age);

    /**
     * 用户登录
     */
    public User userLogin(Map<String,String> map);
    /**
     * 根据id查询用户数据
     */
    public User getById(Integer id);
    /**
     * 查询所有用户
     */
    public List<User> getAll();
    /**
     * 添加用户
     */
    public Integer insertUser(User user);
    /**
     * 修改用户
     */
    public Integer changeUser(User user);
    /**
     * 删除用户
     */
    public Integer removeUser(Integer id);

}
